#include<iostream>
using namespace std;

/*我们重载++与--运算符*/
/*
struct test{
	int a;
};
*/
/*注意，前置++与后置++返回的东西不同

test& operator++(test& na){
	++(na.a);
	return na;
}

int operator++(test& na,int){
	int temp=na.a;
	++(na.a);
	return temp;
}
*/

/*类型转换运算符*/
/*explicit关键字阻止了隐式类型转换
class test{
	private:
		int a;
	public:
		explicit test(int na):a(na){}
		operator int() const;
};

test::operator int() const{
	return a;
}
*/

/*
 * 为了防止意外的类型转换的发生，必须声明为explicit
 * explicit operator int() const {return val;}
 *
 */

int main(){
	/*test a(3);
	int k=a+3;
	test b(4);
	b=4;
	cout<<k<<endl;*/
}
